package com.atguigu.lease.common.context;

//负责将数据绑定到线程。负责清理/删除线程上绑定的数据
public class LoginUserContext {
    private static ThreadLocal<LoginUser> threadLocal = new ThreadLocal<>();

    /**
     * 负责绑定数据到线程上
     * @param loginUser 被绑定的数据
     */
    public static void setLoginUser(LoginUser loginUser){
        threadLocal.set(loginUser); //将数据与线程进行绑定，数据存储到哪里？  Thread的ThreadLocal.ThreadLocalMap类似集合对象中。以键值对形式存储。
    }

    /**
     * 负载从线程上获取绑定的数据
     * @return
     */
    public static LoginUser getLoginUser(){
        return  threadLocal.get();
    }

    /**
     * 删除线程上绑定的数据
     */
    public static void clear(){
        threadLocal.remove();
    }
}
